<?php

namespace app\adminapi\controller;

use think\Controller;
use think\Request;

class Role extends BaseApi
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $role = \app\common\model\Role::select();

        foreach($role as &$v){
            $auth = \app\common\model\Auth::where('id', 'in', $v['role_auth_ids'])->select();
            $auth = (new \think\Collection($auth))->toArray();
            $auth = get_tree_list($auth);
            $v['role_auths'] = $auth;
        }
        unset($v); //使用完引用后销毁变量
        $this->ok($role);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $param = input();
        $validate = $this->validate($param,[
            'role_name|角色名' => 'require',
            // 'desc|描述' => 'require',
            'auth_ids|权限ids' => 'require',
        ]);
        if($validate !== true){
            $this->fail($validate, 401,'');
        }

        $param['role_auth_ids'] = $param['auth_ids'];
        $result = \app\common\model\Role::create($param, true);
        if(empty($request)){
            $this->fail('角色添加失败', 402);
        }
        $data = \app\common\model\Role::find($result['id']);
        $this->ok($data);        
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        $data = \app\common\model\Role::field('id,role_name,desc,role_auth_ids')->find($id);
        $this->ok($data);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $params = input();
        $validate = $this->validate($params,[
            'role_name|角色名' => 'require',
            // 'desc|描述' => 'require',
            'auth_ids|权限ids' => 'require',
        ]);
        if($validate !== true){
            $this->fail($validate, 401,'');
        }

        $params['role_auth_ids'] = $params['auth_ids'];
        $result = \app\common\model\Role::update($params, ['id', $id], true);
        if(empty($request)){
            $this->fail('角色修改失败', 402);
        }
        $data = \app\common\model\Role::field('id,role_name,desc,role_auth_ids')->find($id);
        $this->ok($data);
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
       if($id == 1){
            $this->fail('该角色无法删除', 401,'');
        }

        $list = \app\common\model\Admin::where('role_id', $id)->count();
        if($list > 0){
            $this->fail('角色使用中，无法删除');
        }
				
       $data = \app\common\model\Role::destroy($id);
       if(empty($data)){
            $this->fail('删除失败', 403,'');
       }
       $this->ok();      
    }
}
